﻿using System.Threading.Tasks;

namespace OmniKits
{
    public interface ICanWait
    {
        bool Wait();
    }
    public interface ICanStart
    {
        bool Start();
    }
    public interface ICanStop
    {
        bool Stop();
    }
    public interface ICanRun
    {
        bool Run();
    }
    public interface IRunJob : ICanRun, ICanStart, ICanWait
    { }
    public interface IRunJobCanStop : IRunJob, ICanStop
    { }

    public interface ICanWaitAsync
    {
        Task<bool> WaitAsync();
    }
    public interface ICanStartAsync
    {
        Task<bool> StartAsync();
    }
    public interface ICanStopAsync
    {
        Task<bool> StopAsync();
    }
    public interface ICanRunAsync
    {
        Task<bool> RunAsync();
    }
    public interface IRunJobAsync : ICanRunAsync, ICanStartAsync, ICanWaitAsync
    { }
    public interface IRunJobCanStopAsync : IRunJobAsync, ICanStopAsync
    { }
}
